Ensamblador

Bueno, comencemos con lo bueno: el lenguaje Ensamblador para la familia Intel 80x86

Ensamblador es un lenguaje de muy bajo nivel. ¿Qué significa "bajo nivel"? Bueno, cuando uno se refiere a lenguajes de programación se usa el término nivel para desribir que tan cerca del habla humana se encuentra determinado lenguaje de programación. Cuando se usa el término "bajo nivel" lo que se está diciendo es que ese lenguaje de programación está muy lejos del habla humana y muy cerca del lenguaje máquina. Por ejemplo, para imprimir una línea de texto en la pantalla usando ensamblador se usaría lo siguiente:

mensaje_a_desplegar db "¡Hola, qué tal!", 0
-
-
-
mov dx, offset mensaje_a_desplegar
mov ah, 9h
int 21h

¡Bastante raro!¿no? En cambio, si quisieras hacer lo mismo con Liberty BASIC , usarías lo siguiente

PRINT "¡Hola, qué tal!"

Mucho más entendible ¿verdad?. BASIC es un lenguaje de alto nivel, se acerca al nivel del lenguaje humano (inglés en casi todos los casos, pues la mayoría de los lenguajes de programación se han inventado en Estados Unidos) en cambio ensamblador se parece muchísimo a la forma en que el microprocesador habla en realidad.

El lenguaje máquina es el verdadero dialécto de un microprocesador y está compuesto única y exclusivamente por 1 y 0. Todas las instrucciones que un microprocesador puede ejecutar, se "llaman" con combinaciones de 1 y 0. Por supuesto, es extremadamente difícil programar en lenguaje máquina; es por eso que se inventó el ensamblador.

El ensamblador sustituye las combinaciones de 1 y 0 (opcodes - códigos de operación) por términos mnemónicos, es decir, palabras mucho más fáciles de recordar que las combinaciones de 1 y 0. Así, en el ejemplo de arriba en lugar de decir:

01001011
00001000

Decimos:

mov ah, 9h

Que quiere decir "mueve el valor 9h al registro ah". ¡Evidentemente es mucho más fácil recordar una instrucción como MOV, que 01001011! Es por eso que se les dió el nombre de mnemónicos, que literalmente significa, "palabra fácil de recordar".

Como probablemente ya se estén imaginando, programar en ensamblador no deja de ser una tarea ardua, pero se tiene una enorme recompensa: el control sobre el sistema es TOTAL. Cualquier cosa que la máquina sea físicamente capaz de hacer, se puede realizar en ensamblador, cosa que no sucede con otros lenguajes de programación (con excepción de C quizás). El uso de ensamblador también tiene otras ventajas: el tamaño de los programas generados en ensamblador es el más pequeño debido a que no se introduce ninguna instrucción extra a lo que se desea hacer; esto a su vez hace que los programas en esamblador sean más rápidos.


¿Que se necesita para comenzar a programar en ensamblador?

Para empezar, se necesita un programa editor para crear el archivo de código fuente. "¿¡Código queeee!?" El código fuente es solamente un archivo de texto sin formato que contiene en secuencia las instrucciones que deseamos que la máquina ejecute. Como este archivo es el origen o fuente del programa ejecutable, se le llama "código fuente" (Source code en inglés). Si usas Windows, entonces ya tienes varios editores. En MS-DOS tienes el programa EDIT, en Windows tienes Notepad. Existe además un editor gratuito especial para programar en ensamblador, se llama ASM Edit y es shareware. Lo puedes descargar aquí.

Como para casi todos los lenguajes de programación, se necesita un pequeño programa que traduzca los mnemónicos a los códigos de operación, este programa se llama compilador. Existen muchos compiladores para ensamblador, los más famosos son MASM (Macro Assembler) y TASM (Turbo Assembler) de las casas comerciales Microsoft y Borland respectivamente. Estos son programas sofisticados y caros, aunque muy buenos. Incluyen todo lo necesario para programar en ensamblador: un editor, compilador y un ligador(más adelante hablo sobre el linker). Los puedes comprar en Internet. Existe sin embargo un excelente compilador shareware, que puedes descargar de miles de sitios en la red (incluido este) y que no tiene problemas para generar programas a partir de código fuente, se llama A86. Yo lo recomiendo muchísimo pues no se necesita un ligador para generar programas ejecutables.

Una vez compilado el archivo de código fuente, se necesita un paso más para hacerlo ejecutable (con la excepción de A86). Por ejemplo, yo tengo un archivo de código fuente con las instrucciones para que la máquina busque archivos en disco, y tengo otro archivo de código fuente con las intrucciones para imprimir la información obtenida por otro programa. Pues bien yo puedo combinarlos en un solo archivo ejecutable que busque archivos en disco y que imprima los resultados de su búsqueda. Para hacer eso, no necesito combinar sus códigos fuente, pues eso requeriría re-editar el código fuente; simplemente los compilo por separado, y después los ligo. Esa es la tarea del linker, ligar (link en inglés) diversos códigos fuente una vez que están compilados. También descubrirás más adelante, que existen ya bibliotecas de código fuente preescrito para ensamblador, que realizan tareas comunes, estas bibliotecas de código, también se incluyen en los programas ejecutables (o "código objeto" en jerga técnica) mediante el linker. A86 no necesita de un linker, el puede incluir los diversos códigos fuente y bibliotecas al momento mismo de compilar.

En resumen, necesito escribir las instrucciones de mi programa en un editor de texto, después necesito compilar ese código fuente, y finalmente lo ligo usando el linker para tener mi programa ejecutable (excepto si uso A86).

Existen algunos otros accesorios para la programación en ensamblador, pero para comenzar, esos son los básicos.


¿Cómo escribo mi primer programa en ensamblador?

¡Pues eso es muy sencillo!, solamente tienes que hacer click aqui.


¿Cómo puedo aprender más sobre la programación en ensamblador?

Lo que se necesita es leer mucho sobre el tema. Para eso, te recomiendo que adquieras algún buen libro sobre ensamblador. En Amazon hay muchos. Si vives en México o en Latinoamérica, puedes comprar el libro "Ensamblador Básico" de Alberto Rojas Ponce, Alfaomega Grupo Editor, ISBN 970-15-0098-9. Además existen varios tutoriales en internet para aprender ensamblador, más abajo hay ligas para sitios en donde puedes encontrar varios. Por último, hay que tener muchísimas ganas de estudiar y de prácticar, solamente la práctica y el estudio pueden hacerte un buen programador en cualquier lenguaje, no solo en ensamblador.


Una vez terminados los conceptos, aquí están las ligas para que descargues todas las herramientas necesarias.



Aquí te presento ligas a sitios de ensamblador donde podrás encontrar excelentes tutoriales para que aprendas y practiques el ensamblador.



Y finalmente, aquí están las ligas hacia algunos sitios en donde puedes encontrar las herramientas que mencioné aquí, y muchas otras como desensambladores, debuggers, com2exe, Editores, IDE's, etc..



!Manda tus comentarios!, estoy muy interesado en recibir feedback sobre esta página y mi sitio en general, así que solamente tienes que hacer click aquí.


[Inicio][Programacion]